Computing systems may use multi-channel memory systems to alleviate memory bottlenecks by increasing the amount of available memory bandwidth. For example, a multi-channel memory system can include a plurality of memory controllers that each controls a separate memory unit. The plurality of memory controllers increases the available bandwidth of the multi-channel memory system compared to a memory system that includes only a single memory controller by being able to handle more memory requests than the single memory controller.
The performance of a multi-channel memory system can be optimized by keeping the workload of the memory channels in the multi-channel memory system well-balanced to maximize the utilization of the available bandwidth across the memory channels of the memory system. In a well-balanced multi-channel memory system, memory loads may be fairly spread across the memory controllers in the memory system. Conversely, unbalanced memory loads in the memory channels of the multi-channel memory system may decrease the advantages of multi-channel memory systems. For example, if a memory system is unbalanced so that some of the memory channels in the memory system shoulder a disproportionate amount of the memory load compared to other memory channels in the memory system, those other memory channels in the memory system may have available memory bandwidth that is underutilized, thereby decreasing the performance of the memory system.